1. Field of the Invention
Embodiments of the present invention relate generally to computer networking and more specifically to adaptive contention techniques for wireless local area network devices.
2. Description of the Related Art
In wireless local area networks (WLAN), the machines in the network are oftentimes configured to begin transmitting upon detecting that the transmission medium is idle. In such a scenario, a transmitting station (STA) begins transmitting and continues doing so until it detects that the transmission is not being received by the target machine. The problem with this architecture, though, is that typically multiple STAs in the WLAN notice that the transmission medium is idle at essentially the same time and, thus, begin simultaneously transmitting over the transmission medium. Such a scenario is undesirable since the transmissions from the other STAs in the WLAN usually interfere with the transmission from a given STA. As is well-known, the machines in a LAN based on the IEEE 802.11 standard are simplex devices, meaning that the machines cannot receive a signal while they are transmitting. Therefore, since the only evidence of a failed transmission is the lack of a media access control (MAC) level acknowledgement (ACK) packet, a STA may spend an entire frame time attempting a transmission before discovering that the transmission is being blocked by the transmission of another STA in the LAN. To address this problem, in 802.11 WLANs, there exists a procedure whereby a STA desiring to transmit a signal must randomly “contend” for the transmission medium with other transmitting STAs in the WLAN.
In one instance, the aforementioned procedure comprises a binary exponential backoff procedure, which is based on an exponent known as a “contention window,” usually abbreviated as CW. In 802.11g networks, the CW is a randomly generated number between 0 and 15. Alternatively, in other 802.11 networks, such as 802.11b networks, the CW is a randomly generated number between 0 and 31. In an 802.11g network, when a STA wants to transmit, it generates a CW by randomly selecting a number between 0 and 15, and this CW value is then multiplied by a slot time (e.g., 9 ms or 20 ms in) to obtain a backoff time. The STA does not attempt to transmit until the backoff time expires. In other words, the STA waits for a number of slot times to pass equal to the value of the CW before attempting to transmit. If the STA experiences a collision, then the STA is configured to temporarily cease transmitting and to increase its CW to a higher value, such as 31, and wait for the new backoff time to expire before attempting to retransmit. Since the new CW for the STA is likely greater than the CWs of the other transmitting STAs in the WLAN, the STA is less likely to experience another collision since the other STAs in the WLAN would likely transmit before the STA retransmits.
One drawback to this approach is that the current binary exponential backoff procedure is inefficient in certain scenarios. For example, the average CW for the STAs in a given network is 7.5, assuming that half of the chosen random numbers are less than 7.5 and half are greater than 7.5. This translates into an average contention backoff time of 67.5 milliseconds in a network using the 9 millisecond slot time option (i.e., 7.5 *9 ms=67.5 ms). In a small 802.11g network with only a few nodes or in a larger 802.11g network where the machines are mostly idle (resulting in few collisions), having an average backoff time of 67.5 ms may result in an excessive amount of “dead air” time, meaning that there may be large windows of time where no STAs are transmitting. Inefficiencies, such as dead time, compromise the overall performance of the wireless network.
As the foregoing illustrates, there is a need in the art for a technique to reduce backoff times for client devices in a wireless network under certain operating conditions.